package agentes;

import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JTextPane;

public class PrincipioFundamentalContagemTabela {
	
	JTextField opcao1; 
	JTextField opcao2;
	JTextField resposta;
	
	Frame frame = new JFrame();
	
	public PrincipioFundamentalContagemTabela(){
		
	}
	
	public void setResposta(JTextField resp){
		resposta = resp;
	}
		
	public void setOpcao1(JTextField op1){
		opcao1 = op1;
	}
	
	public void setOpcao2(JTextField op2){
		opcao2 = op2;
	}
	
	public JTextField getOpcao1(){
		return opcao1;
	}
	
	public JTextField getOpcao2(){
		return opcao2;
	}

	public JTextField getResposta(){
		return resposta;
	}
	
	public int getValueOpcao1(){
		return Integer.parseInt(opcao1.getText());
	}
	
	public int getValueOpcao2(){
		return Integer.parseInt(opcao2.getText());
	}
	
	public int getValueResposta(){
		return Integer.parseInt(resposta.getText());
	}
	
	public void setErrorOpcao1(){
		opcao1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.red), "Erro!"));
	}
	
	public void setErrorOpcao2(){
		opcao2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.red), "Erro!"));
	}
	
	public void setErrorResposta(){
		resposta.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.red), "Erro!"));
	}
	
	public void setOkOpcao1(){
		opcao1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.green), "Certo!"));
	}
	
	public void setOkOpcao2(){
		opcao2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.green), "Certo!"));
	}
	
	public void setOkResposta(){
		resposta.setBorder(BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.green), "Certo!"));
	}
	
	public void removeAlertOpcao1(){
		opcao1.setBorder(BorderFactory.createLineBorder(Color.black));
	}
	
	public void removeAlertOpcao2(){
		opcao2.setBorder(BorderFactory.createLineBorder(Color.black));
	}

	public void removeAlertResposta(){
		resposta.setBorder(BorderFactory.createLineBorder(Color.black));
		resposta.setText("");
	}
	
	public void mostrarAlertaErro(int tipo){

		
		JTextPane txtpnEnunciado = new JTextPane();
		txtpnEnunciado.setContentType("text/html");
		txtpnEnunciado.setFont(new Font("Dialog", Font.PLAIN, 12));
		txtpnEnunciado.setEditable(false);
		
		
		switch(tipo){
			case 1:
				txtpnEnunciado.setText( 
						"<br>" +
						"Você efetuou o cálculo de forma incorreta. Refaça a conta:" +
						Integer.parseInt(opcao1.getText())+" x "+Integer.parseInt(opcao2.getText())+"<br><br>");
				break;
			case 2:
				txtpnEnunciado.setText( 
						"<br>" +
						"O arranjo simples é feito com n elementos distintos, agrupados p a p: A(n,p)<br><br>" +
						"No caso do exemplo, são 4 bandas agrupadas 2 a 2 (1º(primeiro) e 2º(segundo) lugares).<br><br>" +
						"Um exemplo do uso do princípio fundamental da contagem: <br>" +
						"<center><b>A (5,3) = n x (n-1) x (n-2) </b>" +
						"<i>n: número de elemento distintos</i></center><br><br><br>" +
						"Como são agrupamentos de 3 a 3, fazemos multiplicação de 3 números. <br>" +
						"No início temos n possibilidades de escolhas; depois, como já foi selecionado um elemento, <br>" +
						"só restam (n-1) opção; assim sucessivamente.<br><br>");
				break;
			case 3:
				txtpnEnunciado.setText(
						"<br>" +
						"As duas posições não podem ter a mesma quantidade de opções pois, <br>" +
						"se uma banda já foi escolhida para uma das posições, <br>" +
						"esta deixa de ser uma opção válida para a outra posição.<br><br>" +
						"Não pode ter, por exemplo, Banda A em primeiro lugar e <br>" +
						"novamente a Banda A, para a segunda colocação."+
						"<br><br>");
				break;
			case 4:
				txtpnEnunciado.setText(
						"<br>" +
						"Você deve estar confundindo a quantidade de elementos (bandas) <br>" +
						"com o número de posições (2: primeiro e segundo lugar)."+
						"<br><br>");
				break;
			case 5:
				txtpnEnunciado.setText(
						"<br>" +
						"Observe que o valor indicado é superior ao número de bandas." +
						"<br><br>");
				break;
		}

		JOptionPane.showMessageDialog(frame, txtpnEnunciado);
	}
	
	
	
	
	
	public boolean verificarPreenchimento(){ return true; }
	public void preencherRespostas(){
	
	}

	public void mostrarIconeSucesso(){
		JOptionPane.showMessageDialog(frame, "Opção válida "+opcao1+","+opcao2);
	}

	public void mostrarIconeFalha(){
		JOptionPane.showMessageDialog(frame, "Opção inválida "+opcao1+","+opcao2);
	}
	
	public void removerRespostas(){}
	public void mostrarAlertaPreenchimento(){}
	public void mostrarAlertaElementoRepetido(){}
}
